Mise à jour le 13/11/2021
Distance en mètres entre deux points avec coordonnées GPS

Distance en mètres entre deux points avec coordonnées GPS

1. Le code

<?php
/*---------------------------------------------------------------*/
/*
    Titre : Distance en mètre entre deux points avec coordonnées GPS                                                    
                                                                                                                          
    URL   : https://phpsources.net/code_s.php?id=459
    Auteur           : forty                                                                                              
    Website auteur   : http://www.toplien.fr/                                                                             
    Date édition     : 25 Sept 2008                                                                                       
    Date mise à jour : 10 Aout 2019                                                                                      
    Rapport de la maj:                                                                                                    
    - fonctionnement du code vérifié                                                                                    
    - modification de la description                                                                                      
*/
/*---------------------------------------------------------------*/
    // renvoi la distance en mètres
    function get_distance_m($lat1, $lng1, $lat2, $lng2) {
      $earth_radius = 6378137;   // Terre = sphère de 6378km de rayon
      $rlo1 = deg2rad($lng1);
      $rla1 = deg2rad($lat1);
      $rlo2 = deg2rad($lng2);
      $rla2 = deg2rad($lat2);
      $dlo = ($rlo2 - $rlo1) / 2;
      $dla = ($rla2 - $rla1) / 2;
      $a = (sin($dla) * sin($dla)) + cos($rla1) * cos($rla2) * (sin($dlo) * sin($dlo));
      $d = 2 * atan2(sqrt($a), sqrt(1 - $a));

      return ($earth_radius * $d);
    }


2. Exemple d'utilisation

<?php
    echo (round(get_distance_m(48.856667, 2.350987, 45.767299, 4.834329) / 1000, 3)). ' km'; // affiche 391.613 km